<?php namespace Admin\Model;
use Hdphp\Model\Model;

class Link extends Model{
	// 固定写法，指定table的表名字,table名字就是要操作的那张表名
	protected $table = "link";
	// 设置自动上传的字段，addtime和logo，logo的字段的结果为up方法的结果
	protected $auto = array(
		// 设置自动上传添加时间字段，调用函数time，规定在插入时才执行
		array('addtime','time','function',3,1),
		// 设置自动上传添加logo路径字段，调用自定义的up方法，规定在更新时才执行
		array('logo','up','method',3,3)
		);
	// 以下为自动检测的内容，规定lname和url字段不能为空
	protected $validate = array(
		// 检测lname字段不能为空，任何情况都执行该判断
		array('lname','required','链接名不能为空',3,3),
		// 检测url字段不能为空，任何情况都执行该判断
		array('url','required','地址不能为空',3,3),
		);
	// 自定义了一个up方法用来判断文件上上传是否符合规定，如果符合符合规定则取得该文件的保存路径，同时允许用户不上传
	public function up(){
		// 如果post请求有收到logo路径内容的话，代表在编辑的时候用户没有修改logo，还是保存原有图片，所以直接返回路径即可，不需进步一操作
		if(Q('post.logo')) return Q('post.logo');
		// 设定照片的上传类型和大小
		$file = Upload::type('jpg,png,txt')->size(2000000)->make();
		if ($file) {//如果$file有内容的话表明上传成功，则返回path
			return $file[0]['path'];
		}else{//反之表明上传失败，上传失败有两种情况一种是没有上传（该情况被允许）,另一种情况是有错误，有错误的话将错误压入$this->error中，待editData方法执行时判断使用。如果没有上传则返回空内容
			if($_FILES['logo']['error']!=4){
				$this->error = Upload::getError();
			}
			return "";
		}
	}
	// 以下方法为自定义添加数据方法addData
	public function addData(){
		// 如果检测不通过这返回false
		if (!$this->create()) return false;
		// 如果上传文件有错误信息，则返回false
		if ($this->error) return false;
		// 以上两步都通过的话，执行添加数据方法
		$this->add();
		return true;
	}
	// 以下是友情链接的编辑方法
	public function editData(){
		// 取得lid为了指定lid通过sava保存数据
		$lid = Q('get.lid');
		// 通过create验证
		if(!$this->create()) return false;
		// 检测图形是否有错误
		if($this->error) return false;
		// 以上检测都没问题的话,就开始保存数据
		$this->where("lid=$lid")->save();
		return true;
	}

}